function executeModule()
{
  
}


/**
* The element to which is applied the scrollbar must have the 'scrollbar' class
* and one of the 'width' or 'height' attributes set to the desired values
*/
$.fn.applyScrollbar = function(dimension){
  this.each(function(){
    var elem = $(this);
    var height = elem.attr('height') || elem.data('scrollbarHeight');
    var width = elem.attr('width') || elem.data('scrollbarWidth');
    var handlerDimension = 4;
    var rightRoundClear = 3;
    var scrollerSpace = 2;
    var clearFloatHtml = '<div style="clear: both"></div>';
    var $scrollerInput = $('<input type="range" value="0" min="0" step="1" readonly/>');
    if (!elem.parent('.scroll-wrap').size()) {
      elem.removeClass('scrollbar');
      elem.removeAttr('width');
      elem.removeAttr('height');
      elem.css('overflow', 'hidden');
    } else {
      var wrapped = true;
    }
    if (typeof dimension != 'undefined') {
      if (height) {
        elem.height(dimension);
      } else if (width) {
        elem.width(dimension);
      }
    }
    if(elem.height()==0)
    {
      elem.html(elem.html());
    }
    if (height && elem.height() > height)
    {
      elem.data('scrollbarHeight', height);
      var scrollDistance = elem.height() - height;
      if (!wrapped) {
        var $wrap = $('<div>')
        .addClass("scroll-wrap")
        .css({
          height: height+'px'
        });
        if(elem.hasClass('tooltip-position'))
        {
          elem.removeClass('tooltip-position');
          $wrap.addClass('tooltip-position');
        }
        $wrap.css({
          paddingRight: scrollerSpace+'px'
        });
        elem.wrap($wrap).css('position', 'relative');
        $wrap = elem.parent();
        $wrap.before($(clearFloatHtml));
        $wrap.before($scrollerInput);
        $wrap.after($(clearFloatHtml));
      }
      $scrollerInput.attr('max', scrollDistance);
      $scrollerInput.rangeinput({
        onSlide: function(event, step) {
          elem.css({
            top: step-scrollDistance
          });
        },
        progress: true,
        value: 0,
        change: function(e, i) {
          elem.animate({
            top: i-scrollDistance
          }, "fast");
        },
        speed: 0
      });
      $scrollerInput = $wrap.prev();
      $scrollerInput.bind('onSlide', function(){});
      var $slider = $scrollerInput.prevAll('.slider:first');
      $slider
      .height(height-rightRoundClear)
      .width(handlerDimension)
      .css('float', 'right')
      .addClass('scroll-vertical')
      .css({
        paddingBottom: rightRoundClear+'px'
      });
      var sliderHeight = Math.max((height * height / elem.height()) - rightRoundClear, 10);
      $slider.find('.handle')
      .width(handlerDimension)
      .height(sliderHeight)
      .append($('<span></span>').css({
        top: (sliderHeight)+'px'
      }));
      $scrollerInput.data('rangeinput').setValue(scrollDistance);
      $wrap.mousewheel(function(event, delta){
        $(this).prev().data('rangeinput').step(delta*10);
        return false;
      });
      // touch devices
      elem.Touchable();
      elem.bind('touchablestart', function(){
        $wrap.data('disable_click', false);
      });
      elem.bind('touchableend', function(){
        //$wrap.data('disable_click', false);
        });
      elem.bind('touchablemove', function(e,i){
        if (Math.abs(i.currentDelta.y) < 1) return;
        $wrap.data('disable_click', true);
        $scrollerInput.data('rangeinput').step(i.currentDelta.y);
      });
    // -- end of Touchable -- //
    }
    else if (width && elem.width() > width)
    {
      elem.data('scrollbarWidth', height);
      scrollDistance = elem.width() - width;
      if (!wrapped)
      {
        $wrap = $('<div>')
        .addClass("scroll-wrap")
        .width(width).css({
          paddingBottom: scrollerSpace+'px'
        });
        if(elem.hasClass('tooltip-position'))
        {
          elem.removeClass('tooltip-position');
          $wrap.addClass('tooltip-position');
        }
        elem.wrap($wrap).css('position', 'relative');
        $wrap = elem.parent();
        $wrap.before($(clearFloatHtml));
        $wrap.after($scrollerInput);
        $scrollerInput.after($(clearFloatHtml));
        scrollValue = 0;
      }
      else
      {
        var scrollValue = elem.data('scrollbarApi').getValue();
        $wrap = elem.parent();
        $scrollerInput = $wrap.nextAll('.range').removeClass('.range');
        $wrap.nextAll('.slider').remove();
      }
      $scrollerInput.attr('max', scrollDistance);
      $scrollerInput.rangeinput({
        progress: false,
        change: function(event, step) {
          elem.animate({
            left: -step
          }, 'fast');
        },
        onSlide: function(event, step) {
          elem.css({
            'left': -step
          });
        }
      });
      $scrollerInput = $wrap.nextAll('.range');
      $scrollerInput.bind('onSlide', function(){});
      $slider = $scrollerInput.prevAll('.slider:first');
      $slider.width(width-rightRoundClear).css({
        paddingRight: rightRoundClear+'px'
      }).addClass('scroll-horizontal').children('.handle').append('<span></span>');
      $slider.find('.handle')
      .height(handlerDimension)
      .width(width * width / elem.width());
      $scrollerInput.data('rangeinput').setValue(scrollValue);
      if (!wrapped) {
        $wrap.mousewheel(function(event, delta){
          var t0 = $(this).data('wheel_time');
          var t1 = new Date().valueOf();
          $(this).data('wheel_time', t1);
          if (t0) {
            var timeInterval = t1 - t0;
          } else {
            timeInterval = 0;
          }
          elem.data('scrollbarApi').step(-delta*accelerateScroll(timeInterval));
          return false;
        });
      }
      // touch devices
      elem.Touchable();
      elem.bind('touchablestart', function(){
        $wrap.data('disable_click', false);
      });
      elem.bind('touchableend', function(){
        //$wrap.data('disable_click', false);
        });
      elem.bind('touchablemove', function(e,i){
        if (Math.abs(i.currentDelta.x) < 1) return;
        $wrap.data('disable_click', true);
        $scrollerInput.data('rangeinput').step(-i.currentDelta.x);
      });
    // -- end of Touchable -- //
    } else {
      return;
    }
    elem.data('scrollbarApi', $scrollerInput.data('rangeinput'));
    elem.css('overflow', 'none');
  });
  return this;
}; 